home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / os2 / lxlt113.zip / LXLITE.GER < prev    next >
Text File  |  1996-05-22  |  26KB  |  508 lines

  1.          ────────────────────────────────────────────────────
  2.           lxLite - ein Packer fuer ausfuehrbare OS/2-Dateien
  3.          ────────────────────────────────────────────────────
  4.  
  5.                      Widmung: Meiner kleinen Tochter Alice,
  6.                       geboren am 12 Feb, 1996 um 03:45.
  7.  
  8.  1. Distribution
  9.  ───────────────
  10.  
  11.    Dieses  Programm ist Freeware. Das heisst, man kann es verbreiten, wie man
  12.  will,    ausser    fuer  den kommerziellen Gebrauch. Kommerzielle Verwendung ist
  13.  nur mit meiner ausdruecklichen Zustimmung erlaubt. Wie man mich kontaktieren
  14.  kann ist in der letzten Sektion dieser Datei zu sehen.
  15.  
  16.    Freeware  heisst  aber auch, dass es keinerlei Garantie fuer das gibt, was
  17.  das Programm macht, ob es das macht was man erwartet, ob es ueberhaupt etwas
  18.  macht.  Ich  uebernehme  keinerlei  Verantwortung  fuer irgendeinen Schaden,
  19.  entgangene  Profite  etc.,  die  durch  Fehler  dieses  Programmes (oder der
  20.  Uebersetzung der Dokumentation) verursacht werden.
  21.  
  22.    Wie    auch immer, es ist erlaubt, das Programm dazu zu verwenden, um jedes,
  23.  auch  jedes  kommerzielle  Produkt  zu  verbessern.  Und  zwar  nicht um den
  24.  eigenen  Vorteil,  sondern  um  den  Vorteil  aller armen User, die sich mit
  25.  riesigen ausfuehrbaren Dateien herumaergern muessen.
  26.  
  27.    Das    Programm  ist  ausschliesslich    in  Virtual  Pascal  1.0  Beta    #003,
  28.  geschrieben,  vor allem mit dem eingebauten 32-bit Assembler. Virtual Pascal
  29.  ist  eine  excellente Sprache, die alle Vorteile und Moeglichkeiten von OS/2
  30.  bedient  und  unterstuetzt,  gleichzeitig Borland Pascal kompatibel ist, und
  31.  einen maechtigen eingebauten Optimierer hat.
  32.  
  33.    Falls du den Source Code von lxLite willst, bitte wende Dich an mich, aber
  34.  du  musst  mir ganz sagen WARUM du ihn brauchst; Leute, die fremde Programme
  35.  unter eigenem Namen verkaufen wollen, bekommen ihn sicher nicht.
  36.  
  37.  2. Introduction
  38.  ───────────────
  39.  
  40.    Ich    denke, wir alle sind recht sauer ueber die gewaltige Groesse die fast
  41.  alle  modernen  Programme  haben,  die  unter    OS/2 laufen (fuer WinDOS gilt
  42.  allerdings das gleiche), ohne oft entscheidend mehr zu koennen als Programme
  43.  frueherer  Zeiten.  Ich  verstehe  nicht,  warum sie so gross sind, weil die
  44.  meisten Compiler, sogar IBM CSet generieren Code in moderaten Groessen.
  45.  
  46.    Nehmen  wir als Beispiel das allseits bekannte MultiMaint. Was um alles in
  47.  der  Welt  macht  das    Ding in einer 700K grossen EXE-Datei? Ich verstehe es
  48.  nicht.  Dazu  kommt  noch,  warum  wird  die  beinahe gleiche EXE-Datei noch
  49.  doppelt  und dreifach dazugepackt (Ich meine MultiSafe und IniMaint, die mit
  50.  MultiMaint  daherkommen).  Das  Programm ist ja ganz nett und es macht seine
  51.  Arbeit ganz gut, aber fuer diese Arbeit ist es einfach zu gross. OS/2 kernel
  52.  haben    etwa den gleichen Umfang. Wo ist da die Relation? Ich kann (und will)
  53.  es  mir  einfach nicht leisten so einen grossen Haufen Mist auf meine Platte
  54.  zu  laden,  also  habe  ich  MultiMaint & Co. wieder gekuebelt. Zu dumm fuer
  55.  deren Autoren.
  56.  
  57.    lxLite  ist    ein Workaround fuer dieses Problem. Ausfuehrbare Dateien kann
  58.  man  packen,  sie nehmen dann nur noch den halben Platz ein, und machen noch
  59.  immer    den  glichen  Job.  Dummerweise braucht es auch den gleichen Platz im
  60.  Speicher - das ist die Schuld des Programmautors.
  61.  
  62.    Soviel ich weiss, gibt es fuer OS/2 nur ein Programm, das etwas Aehnliches
  63.  macht,  REPACK  von  IBM  (EWS?).  Aber  verglichen  mit  lxLite  erzeugt es
  64.  groessere  Dateien,  obwohl  es  den  gleichen  Algorithmus  verwendet.  Zum
  65.  Beispiel,  COURIER.FON aus OS/2 Warp Build 8.192 wird von REPACK zu 44K, von
  66.  lxLite  aber  in  34K    gepackt. Spuer den Unterschied! BTW, LINK386+Resource
  67.  Compiler  compilieren    COURIER.FON  auch  in  eine  44K-Datei.  Daher    denke
  68.  ich,dass das sie eine gemeinsame Library verwenden.
  69.  
  70.    Ich    komprimierte  alle  meine ausfuehrbaren Dateien (inklusive aber nicht
  71.  nur  ?:\os2\*.exe,  ?:\os2\dll\*.* und ?:\os2\dll\ibmnull;laserjet) und mein
  72.  system  ist  nach  wie  vor  stabil.  Ein lxLite Benutzer (Pavel Roskin) hat
  73.  festgestellt,    dass  lxLite  sogar  os2krnl komprimiert:-) Sehr angenehm vor
  74.  allem    fuer  eine  einzelne  Bootdiskette  [Anmerkung    d.  Uebersetzers:  Es
  75.  stimmt].
  76.  
  77.  3. Features
  78.  ───────────
  79.  
  80.    lxLite  komprimiert die Dateien auf die gleiche Art wie LINK386 es tut. Es
  81.  gibt  keine  andere Moeglichkeit gepackte ausfuehrbare Dateien unter OS/2 zu
  82.  implementieren,  als  die zwei, die OS/2 Warp (oder die eine die 2.x) kennt.
  83.  So, hier ist eine kurze Beschreibung dieser beiden Algorithmen:
  84.  
  85.    1.  Run-length  packing.  Das  ist im Prinzip die gleiche Methode, wie sie
  86.  Microsoft  C  fuer DOS verwendet. Das Ergebnis ist sehr SCHLECHT, weils sich
  87.  ausfuehrbare  Dateien    nicht fuer die Pack-Methode eignen. Zum Beispiel, PCX
  88.  Dateien werden auf die gleiche Art gepackt.
  89.  
  90.    2.  Eine  Art  Lempel-Ziv  Algorithmus.  Lempel-Ziv    ist  die Methode, die
  91.  beinahe  alle    DOS-EXE  Packer  verwenden  -  LZEXE, PKLITE, PGMPAK etc. Die
  92.  Methode  die  fuer  ausfuehrebare  OS/2 Dateien standardisiert ist, ist IMHO
  93.  nicht die effektivste. Dazu kommt noch, dass ausfuehrbare OS/2 Dateien einen
  94.  anderen  Ladealgorithmus  haben als DOS-EXE-Dateien, Teile von ausfuehrbaren
  95.  OS/2-Dateien  koennen    auch  nur  geladen werden, wenn sie gebraucht werden.
  96.  Deshalb  kann ein Lempel-Ziv dictionary nicht ueber eine einzelne Page (4096
  97.  Bytes)  hinausgehen.  Folglich sind die Resultate auch nicht so gut, wie sie
  98.  theoretisch sein koennten.
  99.  
  100.    lxLite  kann  beide    Methoden  verwenden,  sowohl zum Packen, als auch zum
  101.  Entpacken.
  102.  
  103.    Im  Allgemeinen  ergibt  die  zweite  Methode die besseren Resultate, aber
  104.  moeglicherweise (?) gibt es Dateien fuer die die erste besser ist.
  105.  
  106.    Aus    diesem Grund werden defaultmaessig beide Methoden angewendet, die mit
  107.  dem kleineren Ergebnis gewaehlt.
  108.  
  109.    lxLite  kann  auch  benutzt    werden,  um Dateien zu entpacken, die bereits
  110.  komprimiert sind, sei es mit mit lxLite, LINK386 oder REPACK von IBM.
  111.  
  112.    Was fuer Dateien koennen nun mit lxLite gepackt werden? Das LX Format wird
  113.  unter OS/2 beinahe ueberall verwendet: Beinahe alles ist im LX format. Nicht
  114.  nur  EXE-Dateien,  sondern  auch  .DLL, .PDR, .QPR, .DRV, .FON, .SYS-Dateien
  115.  koennen mit lxLite gepackt werden.Sogar die VDDs (Virtual Device Drivers) in
  116.  \OS2\MDOS  koennen  damit gepackt werden.Praktisch kann man lxLite auf jedes
  117.  Datei loslassen: Wenn es kein LX ist, wird lxLite es nicht anruehren.
  118.  
  119.    Es ist also moeglich, den ganzen \OS2\*\ zu komprimieren, man bekommt jede
  120.  Menge    Extraplatz  ohne  irgendwelchen Overhead! Die DeKompressionszeit wird
  121.  durch    die  verkuerzten  Ladezeiten der verkleinerten Dateien von der Platte
  122.  bei weitem aufgewogen.
  123.  
  124.    Also,    Reboot   von   einer   Diskette   (eventuell   von     den   beiden
  125.  Installationsdisketten  und dann F3 waehlen, dann das entsprechende Laufwerk
  126.  waehlen,  wo  das  installierte  OS/2 liegt. Dann ist folgendes beim Command
  127.  prompt einzugeben:
  128.  
  129.    \[path]\lxLite os2\*.exe os2\dll\*.* os2\dll\ibmnull\*.drv
  130.  
  131.  und   so   weiter.   So  koennen  auch  die  Dateien,    welche    zur  Laufzeit
  132.  normalerweise    gesperrt  (EXE,DLL)  sind,  problemlos gepackt werden. lxLite
  133.  Version  1.00    und  hoeher ist sogar in der Lage Dateien, die gerade benutzt
  134.  werden,  zu  packen.  In  diesem Fall kann warnt lxLite und fragt nach ob es
  135.  das  Modul  auslassen    oder  durch  seine  gepackte  Version  ersetzen soll.
  136.  Grundsaetzlich  ist  das  ersetzen  auch  so  kein  Problem, nur muss man im
  137.  Hinterkopf  behalten,    dass  das  Original bereits im Speciher sitzt, und so
  138.  auch  jede  Menge  Platz  im  SWAPPER.DAT  auffressen. Ein Reboot sobald wie
  139.  moeglich ist daher immer eine gute Idee.
  140.  
  141.    Versionen von lxLite ueber 1.00 gibt es in zwei verschiedenen EXE-Dateien:
  142.  lxLite.exe  ist  die  normale    Version fuer OS/2 v2.99, Warp und hoeher. Die
  143.  andere,  namens lxLite2x.exe ist fuer die aelteren 32 bit Versionen von OS/2
  144.  (i.e.    2.x,  NICHT  1.x weil unter 1.x gab es das LX Format noch nicht). Als
  145.  OS/2 Warp User kann man es getrost loeschen.
  146.  
  147.  4. Optionen
  148.  ───────────
  149.  
  150.    Es  gibt  jede  Menge  Optionen  in lxLite. Ich liebe Optionen einfach :-)
  151.  Deshalb  kann    man  bei lxLite beinahe alles und jedes konfigurieren. Um den
  152.  User  vor  allzuviel  Konfiguration  zu  schuetzen, unterstuetzt lxLite eine
  153.  einzelne   Konfigurationsdatei,   in    der   gleich  einige  Konfigurationen
  154.  mitgeliefert ('factory defaults') sind. Sie sind weiter unten aufgelistet:
  155. ─────────────────────────────────────────────────────────────────────────────
  156.  
  157. DEFAULT (wird  standardmaessig geladen):  DEFAULT ist eine `Arbeitskonfigura-
  158.    tion'.  Alle parameter sind    auf maximale Kompression  gesetzt.  Die Er-
  159.    zeugung von .BAK Dateien ist abgeschaltet. Beachte, dass diese Konfigura-
  160.    tion IMMER geladen  wird,  bevor  irgendwelche  andere  Optionen wirksam
  161.    werden,  sogar  die /C{#} Option  wird  ausgefuehrt    NACHDEM die DEFAULT-
  162.    Konfiguration geladen Worten ist.
  163.  
  164. FAST:  Niedrigste  Kompressionsrate,  kuerzeste  Ladezeiten.  Wenn  man  IBM
  165.    glaubt,  werden ausfuehrbare Dateien schneller geladen, wenn Datenobjekte
  166.    innerhalb  der Datei an  Sektorgrenzen (512    Bytes) ausgerichtet werden.
  167.    Ich    kann  eigentlich  keinen  Unterscheid  feststellen,  daher:  Selber
  168.    ausprobieren!  Vorkomprimierte  Daten  werden  nicht  de-komprimiert und
  169.    wieder re-komprimiert.
  170.  
  171. FAST2: Packt ein bisschen besser, aber langsamer. Ladezeiten sind so schnell
  172.    wie bei CFG#1.
  173.  
  174. VER2X: Optimal fuer pre-Warp Versionen von OS/2. Versionen vor Warp (3.0)
  175.   wissen nichts von der Lempel-Ziv (/EXEPACK:2)  Methode. Programme sollten
  176.    nicht mit Lempel-Ziv gepackt werden,  falls die Moeglichkeit besteht, dass
  177.    sie unter OS/2 2.xx (ausser 2.99) laufen sollen.
  178.  
  179. FAILSAFE: Lempel-Ziv packen ist eingeschaltet. Ein fehlersichere Konfigura-
  180.    tion.  Alle Daten werden genau wie von LINK386 geschrieben, deshalb sind
  181.    die Dateien etwas groesser als bei der DEFAULT-Konfiguration. Nur fuer WARP
  182.    (oder hoeher) und 2.99!
  183.  
  184. MAX:  Beste Kompressionsrate. SEHR LANGSAM! Wird wohl selten gebraucht wer-
  185.    den.
  186.  
  187. NEWSTUB:  Das ist eine spezielle Konfiguration mit der man den    DOS-Stub in
  188.    LX Executables  durch  einen  anderen  ersetzen  kann,  ohne irgendetwas
  189.    anderen zu  veraendern.  Du    musst  einen Dateinamen  fuer  den  neuen Stub
  190.    angeben -  diese Konfiguration teilt lxLite    mit,  dass es alte, gepackte
  191.    Objekte nicht entpackt und unkomprimierte Objecte nicht packt.
  192.  
  193. MINSTUB:  Diese Konfiguration ist mit NEWSTUB verbunden  und  ersetzt durch
  194.    den kleinstmoeglichen  Stub    vom Typ `say-error-and-exit`.  Kleiner gehts
  195.    nimmer (glaub ich zumindest), ausser du kuerzt die Fehlermeldung.
  196.  
  197. VDMSTUB:  Diese Konfiguration befiehlt lxLite, den vorgefundenen Stub durch
  198.    einen`run-from-VDM`-Type  zu  ersetzen.  Dieser ist    auch  so  kurz, wie
  199.    moeglich:-).  Bitte die Beschreibung der /T{#} Option fuer weitere Details
  200.    durchlesen.
  201.  
  202. INFO:  Diese Konfiguration verwenden um an Informationen ueber    das ausfuehr-
  203.    bare Modul zu erhalten ohne es neu zu schreiben (siehe auch Option /V+)
  204.  
  205. ---------------------------------------------------------------------------
  206.  
  207.    Um  eine  eine  spezifische Konfiguration zu verwenden, ist lxLite mit /C#
  208.  als  Parameter  aufzurufen,  wobei  #    der  Name  der Konfiguration ist. Die
  209.  Einstel- lungen sind in der Datei lxLite.CFG im gleichen Verzeichnis, in dem
  210.  sich  lxLite.EXE  befindet.  Kuemmere    dich nicht um Pfade, lxLite wird sein
  211.  .CFG schon finden. Beispiel: Um die Konfiguration `max` zu verwenden, starte
  212.  lxLite /cMax.
  213.  
  214.    Fuer  eine detailierte Beschreibung des .CFG-Dateiformats, lies die ueber-
  215.  naechste Sektion.
  216.  
  217.    Nun    kommt eine detaillierte Erklaerung darueber was jeder einzelne Switch
  218.  tut.  Jeder Switch, der das '+'- oder '-'-Zeichen akzeptiert (um Aktion ein-
  219.  oder  auszuschalten)  kann auch ohne Zeichen benutzt werden, das heisst dann
  220.  halt '+'. Das heisst uz.B., /V+ ist gleich wie /V.
  221.  
  222. /A{P|S|N{P|S}}
  223.    setzt die Ausrichtungsmethode (Alignment) fuer das erste und die weiteren
  224.    Objekte. Das erste Objekt kann man auf [P]age shiftt, [S]ector oder [N]o
  225.    boundary  ausrichten.  Die letzte Option (No boundary)  wird von LINK386
  226.    niemals  benutzt,  aber es funktioniert,  und das LX Format    erlaubt es.
  227.    Alle  Objecte ausser dem ersten  MUeSSEN zumindest  auf PageShift boundary
  228.    ausgerichtet sein. PageShift ist ein Wert, der im LX Header specifiziert
  229.    ist. Um ihn neu zu definieren, verwende die /R# Option.
  230.  
  231. /B{+|-}
  232.    Das Umbenennen der Originaldatei in .BAK ein-  (+) oder ausschalten (-).
  233.    Beachte bitte, dass das eine BETA-Version ist - deshalb sind .BAK Dateien
  234.    standardmaessig eingeschaltet.
  235.  
  236. /C{#}
  237.    Verwenden  der  Konfiguration  mit  ID  =  #.  Die  zwei  vordefinierten
  238.    Konfigurationsnamen    sind "DEFAULT"    und "UNPACK".  Die Erste wird immer
  239.    geladen,  wenn lxLite startet und die Zweite  wird benutzt  wenn die /X+
  240.    Option angegeben wird (NICHT gleichbedeutend mit /cUnpack).
  241.  
  242. /D{+|-}
  243.    Drinnen lassen  (+)    oder rauswerfen (-)  von [D]ebuginfo falls in einer
  244.    Datei  angetroffen.      Manche  Softwareproduzenten  vergessen  (?)  ihre
  245.    Applikation ohne Debuginfo neu zu linken,  sobald sie fertig  ist. Diese
  246.    Option kann dir manchen Platz bringen und beeintraechtigt  die Stabilitaet
  247.    und Funktionalitaet ueberhaupt nicht.  Standardmaessig ist  es eingeschaltet
  248.    (i.e. Debuginfo wird rausgeworfen).
  249.  
  250. /F{+|-}
  251.    Erzwungenes    repacking.  Ist  zu  verwenden    um  die  Meldung   `already
  252.    processed` zu uebergehen,  i.e.   wemn lxLite denkt, dass die  Datei schon
  253.    bearbeitet  wurde,  das aber  in  Wirklichkeit  nicht der Fall  war. Das
  254.    passiert normalerweise nicht,  kann    aber  passieren,  wenn man versucht
  255.    einen Stub  durch einen anderen Stub  derselben Groesse  zu    ersetzen, und
  256.    zwar bei einer bereits komprimierten Datei.
  257.  
  258. /M{R{N|1|2|3}|L{N|1}}
  259.    Setzt  die  Kompressionsmethode  und  -parameter.   Das  zweite  Zeichen
  260.    definiert  die  Methode,  die  verwendet  werden  soll:  `R`  steht    fuer
  261.    Run-Length (/EXEPACK:1)  und 'L' for Lempel-Ziv (/EXEPACK:2). Das dritte
  262.    Zeichen ist der Kompressionslevel,  der mit der  Methode erreicht werden
  263.    soll;  Falls N spezifiziert    wird,  ist  die Methode  abgeschaltet. Drei
  264.    Levels  gibt  es  fuer die    Run-Length-Kompression.  Der Level 1 ist der
  265.    schnellste.    Er  sucht nur nach  1-Zeichen  Strings.  Zum  Beispiel, ein
  266.    'AAAAAAAA'  String wird erkannt und zu   8,    1, 'A' gespeichert, waehrend
  267.    ein    'ABABABAB'  String unkomprimiert gespeichert wird.  Level 2 erkennt
  268.    Strings  jeder Laenge bis   16  Zeichen.  Das Beispiel  von oben  wird zu
  269.    4,2,'AB'  kodiert.  Das  ist  die  Standardeinstellung  fuer  die meisten
  270.    'Factory`-Konfigurationen.  Und als letztes, der dritte Level sucht nach
  271.    allen Strings  jeder Laenge bis zu einen halben Page-Laenge (= 2048). Die-
  272.    se  Kompressionsmethode  ist  SEHR    langsam  and   ergibt  selten echte
  273.    Ergebnisse,    man sollte sie nur verwenden wenn man sie wirklich braucht.
  274.    Der Lempel-Ziv  Algorithmus kann  nur entweder  abgeschaltet (/MLN) oder
  275.    eingeschaltet (/ML1)  sein. Wenn er eingeschaltet ist, sucht er nach al-
  276.    len Matchesunnter Verwendung einer ziemlich schnellen Hash-Tabelle, des-
  277.    halb gibts keinen Grund die Kompression abzustufen.
  278.  
  279. /P{+|-}
  280.    Ein-  (+) oder ausschalten (-) einer Pause vor jeder Datei. Das Programm
  281.    zeigt den Namen  der Datei,    die als naechstes gepackt  werden soll,  und
  282.    ermoeglich eine Auswahl,  ob sie bearbeitet oder in    Ruhe gelassen werden
  283.    soll.
  284.  
  285. /R{#}
  286.    [R]e-align (ausrichten)  der Pages auf eine spezielle Boundary.  (#) muss
  287.    eine Potenz von  2  sein.  Diese Option ist analog zu  LINK386`s /ALIGN:
  288.    Switch.  Viele Programmierer  kuemmern  sich  nicht    darum,    dass  das /A:
  289.    standardmaessig auf eine  Boundary  von 512    (ein Sektor)  gesetzt ist und
  290.    richten  jede  Page    der  ausfuehrbaren  Module  auf  512  Byte  aus. Das
  291.    Ergebnis ist ein Haufen  unbenutzter Platz innerhalb  der Programmdatei.
  292.    Man kann nun solche Dateien mit einer anderen /ALIGN: Option neu linken.
  293.    Standardmaessig ist /R:4.  Um lxLite zu zwingen sich wie LINK386,  muss man
  294.    /R:512 verwenden. Das ist equivalent zu /ASS :-) .
  295.  
  296. /S{+|-}
  297.    Zeigen (+)  oder nicht zeigen (-)  der aktuellen Konfiguration.  Das ist
  298.    ganz brauchbar,  um mal zu schauen welche Einstellungen in der CFG-Datei
  299.    gespeichert    sind,  besonders  bei  verketteten  Konfigurationen  (siehe
  300.    weiter unten).  Beispiel:  lxLite /CDEFAULT /S zeigt die standardmaessigen
  301.    Einstellungen.
  302.  
  303. /T{#}
  304.    Die mit # specifizierte Datei als neuen DOS-Stub verwenden. Ein DOS-Stub
  305.    ist    eine  kleine DOS-.EXE-Datei,  die in eine OS/2`s  LX-Datei gelinked
  306.    wird, damit das Programm eine Fehlermeldung ausgibt, wenn es von DOS aus
  307.    gestartet  wird.  Normalerweise  sieht das etwa  folgend  aus:
  308.  
  309.    Dieses Programm laeuft nur unter OS/2
  310.  
  311.    Mit     lxLite  kommen   2   DOS-Stub-Programme   mit:   stub_min.bin    und
  312.    stub_vdm.bin.  Der  erste ist ein Standard-`Schreib geht nicht und Ende`
  313.    Typ,  aber er ist etwas kleiner als die  ueblichen DOS-Stub-Programme die
  314.    von den ueblichen  Linkern erzeugt werden.  Der zweite ist ein  Stub, der
  315.    eine neue  OS/2-Session startet  und das Programm  daraus startet. Falls
  316.    OS/2  nicht gefunden wird, wird die uebliche Fehlermeldung produziert.
  317.  
  318. /U{+|-}
  319.    Ein- (+) oder ausschalten (-) des Entpackens einer Datei vor dem Packen.
  320.    lxLite weiss  wie man  beide  der  beschriebenen  Methoden  zum Entpacken
  321.    verwendet,  deshalb ist  die  Option  standardmaessig   ist eingeschaltet.
  322.    Ausschalten ist nur dann sinvoll, wenn Zeit gespart werden soll.
  323.  
  324. /V{+|-}
  325.    Verbose  (zeigt  ein  ganzen  Haufen  Dateiinformationen)   Das  ist der
  326.    Schalter fuer Neugierige:-)    Mit /V+  zeigt lxLite ein paar Informationen
  327.    ueber die bearbeitete Datei an (um komplette Information ueber .LX Dateien
  328.    zu bekommen, rate ich jedem exeHdr.EXE from OS/2 Programmer`s Toolkit zu
  329.    verwenden).
  330.  
  331. /W{+|-}
  332.    Ein- (+) oder ausschalten (-) ob das Ergebnis des Packens auf die Platte
  333.    geschrieben werden  soll.   Standardmaessig ist es  eingeschaltet (nona!),
  334.    aber du  kannst  es    ausschalten falls  du  die  Informationen  ueber /V+
  335.    anschauen willst,  ohne die Datei neu zu packen und frisch zu schreiben.
  336.    Diese Option kann auch fuer debugging der Optionen nuetzlich sein.
  337.  
  338. /X{+|-}
  339.    e[X]pandieren   (+)    oder Packen  (-)  der  uebergebenen Dateien.  Diesen
  340.    Switch verwendet man,  um  Dateien  zu  entpacken.  lxLite  kann  sowohl
  341.    Dateien, die es selbst komprimiert hat, als auch solche, die von anderen
  342.    Programmen  mit  den  Standardmethoden  gepackt  wurden.  (i.e. Resource
  343.    Compiler,  LINK386,    REPACK).  /X-  ist nicht identisch mit der /cUnpack
  344.    Option.
  345.  
  346. /Z{#}
  347.    Diese  Option  setzt   den    `threshold`   fuer   lxLite  und   hilft  so
  348.    festzustellen,  ob eine Stub ein `dummy` ist oder  ob  er eine spezielle
  349.    Funktion hat. Es gibt einige Programme (zum Beispiel, \os2\xdfloppy.exe)
  350.    die sowohl unter DOS als auch unter OS/2  laufen - in solchen Programmen
  351.    ist die DOS Executable in der   OS/2` LX als ein DOS stub implementiert.
  352.    Standardmaessig (and using simply /Z)  lxLite haelt jeden Stubs  der groesser
  353.    als 1024  Bytes ist,  fuer einen funktionellen,  und daher hat die  /T{#}
  354.    Option auf diese keinen Effekt.
  355.  
  356. /?,/H
  357.    Zeigt eine  kurze Hilfe an.    Diese  ist ganz  brauchbar,  wenn man einen
  358.    Switch aus der ganzen Liste vergessen hat:-)
  359.  
  360. ─────────────────────────────────────────────────────────────────────────────
  361.    Das    .CFG  Dateiformat ist so simpel wie moeglich: Es ist eine reine ASCII
  362.  Textdatei,  welche  mit  jedem beliebigen Texteditor bearbeitet werden kann.
  363.  Jedes    Zeichen nach einem Strichpunkt ';' wird ignoriert, i.e. damit koennen
  364.  Kommentare in die Konfigurationsdatei eingesetzt werden:
  365.  
  366. ; Diese Zeile ist ein Kommentar
  367.  
  368.    Jede  Zeile,  die  mit  einem  Wort    und  einem Doppelpunkt beginnt (z.B.:
  369.  "Wort:")  wird  als einzelne Konfiguration behandelt. Das Wort identifiziert
  370.  die Konfiguration.
  371.  
  372.    Das ist ein Beispiel fuer einen Konfigurationseintrag:
  373.  
  374. FAILSAFE: /APP /B- /G+ /R4 /MR2 /ML1 /P- /U+ /V-
  375.  
  376.    Wie    man sieht stehen nach dem Doppelpunkt beliebige Switches, wie man sie
  377.  auch  in  der    Kommandozeile  nach  lxLite  schreiben    wuerde.  Rekursive /C
  378.  Optionen  werden  nicht  ignoriert,  so  dass    man  mehrere  Konfigurationen
  379.  aneinander  binden  kann,  aber  die /C Option wird als letztes verarbeitet,
  380.  das  heisst  von  zwei  ueberlappenden Optionen wird nur die letzte effektiv
  381.  sein. Als Beispiel:
  382.  
  383. here: /app /b- /g+
  384. da  : /ass /b+ /p+ /chere
  385.  
  386.    "lxLite /cda " ist also gleichbedeutend mit "lxLite /app /b- /p+ /g+". Man
  387.  beachte,  dass  lxLite  auch  weitere    Aufrufe  auf  dieselbe    Konfiguration
  388.  ignoriert, um unendliche Schleifen zu vermeiden. Das bedeutet, "lxLite /cOne
  389.  /cOne" wird die `One` Konfiguration nur EINMAL laden.
  390.  
  391. 5. Error messages
  392. -----------------
  393.    Wie     die   allermeisten   normalen     Programme  erzeugt  lxLite  manchmal
  394.  Fehlermeldungen  :-)  Manche  von Ihnen erscheinen in aehnlichen Situationen
  395.  haben    aber  unterschiedliche    Ausloeser.  Hier  ist  eine  kurze  Liste der
  396.  haeufigsten Fehler:
  397.  
  398.    * Invalid Konfiguration Datei format:
  399.     Ungueltiges Format der Konfigurationsdatei. Selbsterklaerend:-)
  400.  
  401.    * Error reading Konfiguration Datei:
  402.     Diese Meldung wird nur generiert, wenn die Konfigurationsdatei physisch
  403.      nicht lesbar ist.    Das Programm erzeugt keine Fehlermeldung  falls die
  404.      Konfigurationsdatei einfach fehlt.
  405.  
  406.    * Error writing Konfiguration Datei:
  407.     Fehler beim Schreiben der Konfigurationsdatei. Selbsterklaerend:-)
  408.  
  409.    * Error reading executable
  410.      Diese  Meldung wird  generiert,  wenn  die ausfuehrbare  Datei physisch
  411.      nicht lesbar ist.
  412.  
  413.    * error writing executable
  414.     Diese Meldung wird generiert, wenn die ausfuehrbare Datei nicht mehr auf
  415.      die Platte geschrieben werden kann.  Das kann dann passieren, wenn auf
  416.      der Platte zuwenig Platz ist, lxLite selbst ueberprueft das nicht.
  417.  
  418.    * invalid executable Datei format
  419.      Die Datei ist nicht vom Format  [L]inear E[x]ecutable. Bei EXE-Dateien
  420.      kann  diese  Meldung  auftreten,  wenn  sie  im  alten,  '[N]ew  [E]xe
  421.      (bwhahaha)'  Format sind  oder  eine  DOS-EXE-Datei oder  eine WinDOS-
  422.      EXE-Datei.
  423.  
  424.    * unsupported executable format revision
  425.     Diese Meldung wird generiert (vielleicht:-), wenn die ausfuehrbare Datei
  426.      eine andere Dateiformatrevision hat als 0.  Da OS/2 Warp normalerweise
  427.      nur mit Revision  0  arbeitet,  duerfte dieser Fehler normalerweise nie
  428.      auftreten.
  429.  
  430.    * invalid Wort/dWort ordering in executable
  431.      Die Datei verwendet die 'little-endian' Byte order. Wahrscheinlich ist
  432.      sie nicht fuer eine Intel-Plattform-Maschine gedacht.
  433.  
  434.    * executable target ist an unsupported CPU type
  435.      Das kann passieren,  falls die Ziel CPU eine andere als  286, 386, 486
  436.      oder P5 ist.
  437.  
  438.    * executable target ist an unsupported OS
  439.      Das  heisst,  dass die Ausfuehrbare Datei nicht fuer  OS/2  ist. WinDOS 95
  440.      verwendet ein  aehnliches    Format,  aber  seine  Kennung  ist  nicht LX
  441.      sondern  LE,  daher  sollte  es  normalerweise  eine  'invalid format'
  442.      Meldung geben.
  443.  
  444.    * unknown entry bundle type in executable
  445.    * unknown page flags in executable
  446.    * invalid object page detected in executable
  447.      Diese alle bedeuten,  dass lxLite etwas ueber die interne Struktur nicht
  448.      versteht.    Ich bitte um Benachrichtigung,    falls jemand Dateien findet
  449.      bei denen diese Fehlermeldungen auftreten.
  450.  
  451.    * nicht enough memory to load executable
  452.      Ich glaube nicht,    dass dieser Fehler unter OS/2 auftreten kann:-) Eher
  453.      wird  eine 'Kein Platz mehr im SWAPPER.DAT' Meldung auftauchen. Wie
  454.      auch immer, ich finde, es war keine gute Idee der IBM-Programmierer
  455.      einen Fehler zu erzeugen, statt auf die Speicheranfrage einfach einen
  456.      NIL-Pointer zurueckzugeben :-(
  457.  
  458. 6. To-do-Liste
  459. --------------
  460.  
  461.    Das    ist  eine  Liste  aller Features, die plane in zukuenftigen Versionen
  462.  einzubauen.  Jede  Anregung  ist  willkommen,    wie  man mich erreicht, siehe
  463.  letztes Kapitel.
  464.  
  465.     * Nichts - sags mir wenn du etwas willst..
  466.  
  467. 7. Bekannte Fehler und Einschraenkungen
  468. --------------------------------------
  469.  
  470.    Hier  ist  eine Liste von Programmen, die sich aus irgendeinem Grund nicht
  471.  packen lassen, probieren sinnlos:
  472.  
  473.    *  PMJPEG  v1.5 bis 1.74. Wie auch immer, sogar IBM`s REPACK kann es nicht
  474.  packen, ich denke, dass es sich entweder um einen Bug im Linker, der benutzt
  475.  wurde,  um  es zu generieren (die ganze EXE hat eine seltsame Struktur) oder
  476.  eine Art debug-Schutz (executable checksum Ueberpruefung?)
  477.  
  478.    *  Ausfuehrbare  Dateien,  die mit VX-REXX erzeugt wurden, werden, wie mir
  479.  berichtet  wurde,  von  lxLite  auch  nicht  richtig  gepackt.  Ich das aber
  480.  hoffentlich fixen sobald ich eine entsprechende Datei in die Finger bekomme.
  481.  
  482. 8. Den Autor kontaktieren
  483. -------------------------
  484.  
  485.    Via Email bin unter folgenden Adressen erreichbar:
  486.  
  487.  FIDOnet: 2:5030/84.5 (prefered)
  488.  Internet: Andrew Zabolotny@p5.n84.r5030.z2.fidonet
  489.        bit@freya.etu.ru (seldom)
  490.  
  491. Enjoy,
  492.  _\ndy
  493.  
  494.  9. Der Uebersetzer
  495.  ──────────────────
  496.  
  497.    Ich    war  von Andys Programm so begeistert, dass ich ihm spontan angeboten
  498.  habe,    fuer  ihn  die    Dokumentation der Version 1.01 ins Deutsche zu ueber-
  499.  setzen.  Manches  klingt  etwas  holprig,  aber  erstens  mache  ich das nur
  500.  hobbymaessig,    zweitens bin ich kein professioneller Programmierer. Aber ich
  501.  hoffe, es hilft trotzdem etwas.
  502.  
  503.    Via    Email  bin  unter  folgenden Adressen erreichbar (obwohl das ziemlich
  504.  sinnlos ist, da ich ausser der Uebersetzung nichts beigesteuert habe):
  505.  
  506.  FIDOnet:  Herwig Bauernfeind, 2:312/5.35
  507.  InterNet: H_BFD@fidonet.at (funktioniert zur Zeit aber nicht so gut)
  508.